package com.kaifamiao.N0804;

public class IdentifyUtil {

    /**
     * 是否符合标识符命名规则
     *
     * @param str
     * @return
     */
    public boolean isIdentify(String str) {

        char ch = str.charAt(0);
        if (ch >= '0' && ch <= '9') {
            return false;
        }

        if (str == "_") {
            return false;
        }
        for (int i = 0; i < str.length(); i++) {
            char ch1 = str.charAt(i);
            if (!(ch1 >= '0' && ch1 <= '9' || ch1 >= 'a' && ch1 <= 'z' || ch1 >= 'A' && ch1 <= 'Z' || ch1 == '_' || ch1 == '$')) {
                return false;
            }
        }


        return true;
    }


    /**
     * 是否是 使用骆驼命名规则 的标识符
     * 首字母小写
     * 多个单词使用首字母大写的方式拼接(如果是使用 _ 连接则不符合要求)
     *
     * @param str 标识符
     * @return girl_friend false
     * Girl    false
     */
    public boolean isCamel(String str) {
        isIdentify(str);
        char ch = str.charAt(0);
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == '_') {
                return false;
            }

        }
        if (ch >= 'a' && ch <= 'z') {
            return true;
        }
        if (ch >= 'A' && ch <= 'Z') {
            return false;
        }
        for (int i = 1; i < str.length(); i++) {
            if (str.charAt(i) >= 'A' && str.charAt(i) <= 'Z') {
                return true;
            }
        }

        return true;
    }

    /**
     * 是否是 使用帕斯卡命名规则 的标识符
     * 首字母大写
     * 多个单词使用首字母大写的方式拼接(如果是使用 _ 连接则不符合要求)
     *
     * @param str
     * @return GirlFriend true
     * Girl_Friend  false
     */
    public boolean isPascal(String str) {
        return false;
    }

    /**
     * 将 标识符 转换为 骆驼命名规则的标识符
     *
     * @param str girl_friend
     * @return girlFriend
     */
    public String translateCamelWords(String str) {
        isIdentify(str);
        str = str.toLowerCase();
        String str1 = "";
        //将字符串按空格分割
        String[] arr = str.split("_");
        //遍历字符串数字，将每个字符串数组中的每个单词首字母替换为大写
        for (int i = 1; i < arr.length; i++) {
            arr[i] = arr[i].replace(arr[i].charAt(0), arr[i].toUpperCase().charAt(0));
            //将替换后的字符串拼接到空串后
            str1 +=arr[i]+" ";
            str = arr[0] + "" + str1;
        }
//        str = str1;
//        str = str.replace(" ", "");


        return str;
    }

    /**
     * 将 标识符 转换为 帕斯卡命名规则的标识符
     *
     * @param str girl_friend
     * @return GirlFriend
     */
    public String translatePascalWords(String str) {
        isIdentify(str);
        str = str.toLowerCase();
        String str1 = "";
        //将字符串按空格分割
        String[] arr = str.split("_");
        //遍历字符串数字，将每个字符串数组中的每个单词首字母替换为大写
        for (int i = 0; i < arr.length; i++) {
            arr[i] = arr[i].replace(arr[i].charAt(0), arr[i].toUpperCase().charAt(0));
            //将替换后的字符串拼接到空串后
            str1 += arr[i] + " ";
        }
        str = str1;
        str = str.replace(" ", "");


        return str;
    }

}
